This invention relates generally to event notification and distribution within a distributed computing environment and, more specifically, to a global event notification system and method for notifying an administrator, user, auditor, or other recipient(s) of changes affected within the distributed computing environment.
Distributed computing environments are typically made up of several systems and resources. For example, Local Area Networks (LAN), Wide Area Networks (WAN), and other types of computer networks typically involve many computer systems connected together via physical communication links. Many networks comprise two or more interconnected servers. User or client systems then attach to one or more of these servers. In addition, servers may have attached peripherals that are available to users of the network. For example, many office networks have various devices that are available to all users of the network, such as printers, fax machines, modems, and the like.
In order to share information and resources among the various systems in a computer network, systems must be able to discover the status of other systems or devices in the network. For example, when a file is to be printed by a network printer, the file must be transferred to the server that is responsible for printing; typically the server physically attached to the printer. Before such a transfer takes place, it may be desirable to discover or ascertain the status of the network printer. For example, if the network printer is off-line or otherwise unavailable, there would be little benefit to transferring a file to the printer for printing. As another example, after a file is finished printing, it may also be desirable to inform the user that the print job is completed. Thus, in a distributed computing environment there is a need for systems to be able to discover when certain events happen on other systems. Although such a mechanism was once accomplished by polling (requesting the status of other systems), today""s modem architectures utilize an event notification procedure.
In an event notification procedure, when an event occurs that should be known by other systems, the system where the event occurs sends a message to the other systems to notify them of the event. This notification can be called xe2x80x9cevent notificationxe2x80x9d and is typically accompanied by a message packet containing data associated with the event. In a computer network, systems or processes that produce events can be referred to as xe2x80x9cevent producersxe2x80x9d and systems or processes that should be notified of the event can be called xe2x80x9cevent consumers.xe2x80x9d
When an event consumer receives notification that a certain event happened on an event producer, the event consumer can take appropriate action. In the case of one example given above, if the network was set up to notify a user when a file had finished printing, after the file had been printed, the server responsible for printing the file would generate an event notification that printing had finished. This event notification would then be passed to the user to notify the user that printing had concluded.
By its very nature, event notification is a local phenomenon. In other words, an event producer notifies event consumers of events that happen locally to the event producer. Event consumers that desire to receive notification of certain events xe2x80x9cregisterxe2x80x9d with the event producing system. When an event occurs, notification is sent to all registered event consumers.
Experience has shown that as networks grow to hundreds, thousands, or tens of thousands of systems and users, the size of such a database becomes larger than any one system can store and maintain. In such a situation, the database is often broken up and scattered among various servers in the network. Thus, server A may contain part 1 of the database, server B may contain part 2 of the database, and server C may contain part 3 of the database.
Sometimes, in order to provide redundancy and prevent loss of the database, portions of the database are replicated on different systems. For example, server A may contain parts 1 and 3 of the database. Server B may contain parts 2 and 1 of the database, and server C may contain parts 3 and 2 of the database. In such a configuration, if any single system is lost, the remaining systems still have an entire copy of the database.
While breaking the database up among systems helps to provide robustness and eliminates the problem of having a single database on one system, it also creates several problems for event notification systems. Because event notification is a local phenomenon, if an event consumer wishes to be notified when a user is added to the system, the event consumer must be registered with enough servers to ensure connections to all parts of the database. This is because if the event consumer only registers with Server A, then in the example given above, the event consumer will only be notified if parts 1 and 3 are changed. If, in this example, part 2 of the database were changed, then an event would not be generated by Server A and the event consumer would not be notified. Prior art systems therefore require registration with a plurality of servers in order to effect notification if any portion of the database is changed. This results in multiple or redundant notifications for a single event.
Once event notification has been implemented within a distributed computing environment, there are changes that do occur within the environment that need to be brought to the attention of the system administrator. The system administrator is someone who has full rights and control over the distributed computer environment, or for at least a portion of that environment say, for example, at a remote site of a branch office of a particular corporation. The system administrator, at either location, must be informed of changes that occur within the system at an earliest convenience. For example, when passwords are being changed that allows a particular user to gain entry into the computer system, the administrator needs to know of such changes to confirm whether the change is acceptable or is being performed by an un-authorized user. This provides a level of security for the system to advise the administrator when such a change has occurred. Further, if the change is made by an unauthorized user, naturally the administrator knowledge of this change can prevent or minimize any breach to the system, thus protecting sensitive information and data stored therein.
As such, there is a need in a global event notification system operated within a distributed computer environment to provide such notification of these type of events, e.g. changes to passwords, access at a remote terminal by an unauthorized user, or other security breach, to the attention of the system administrator for appropriate action.
According to the present invention, a distributed computer environment (DCE) is disclosed that provides event globalizing of at least one event at one server in the DCE to other servers within said DCE as well as maintains a record of specific event activity over the DCE. The maintenance of the records is performed by storing a global event repository comprising a list of events and a corresponding list of servers in order to identify which of the servers should receive which events, storing a local event registry comprising a list of events- and a corresponding list of local event consumers in order to identify which of the local event consumers should receive which events, identifying specific events within the list of events to be monitored for a specific purpose, monitoring said specific events as they occur over the DCE, notifying a specific local event consumer of the occurrence of the specific events, and recording a log of event activity involving only the specific events.